'''
- Extract domain from host name

domain pattern:
	x.y
	x.y.z

>>> extract_domain('www.google.com')
'google.com'

>>> extract_domain('www.google.com.cn')
'google.com.cn'

>>> extract_domain('www.google.cn')
'google.cn'

>>> extract_domain('www.google.co.uk')
'google.co.uk'

>>> extract_domain('www.google.bj.cn')
'google.bj.cn'

'''

CCTLD = ['ac','ad','ae','af','ag','ai','al','am','an','ao','aq','ar','as','at','au','aw','ax','az','ba','bb','bd','be','bf','bg','bh','bi','bj','bl','bm','bn','bo','br','bs','bt','bv','bw','by','bz','ca','cc','cd','cf','cg','ch','ci','ck','cl','cm','cn','co','cr','cu','cv','cx','cy','cz','de','dj','dk','dm','do','dz','ec','ee','eg','eh','er','es','et','eu','fi','fj','fk','fm','fo','fr','ga','gb','gd','ge','gf','gg','gh','gi','gl','gm','gn','gp','gq','gr','gs','gt','gu','gw','gy','hk','hm','hn','hr','ht','hu','id','ie','il','im','in','io','iq','ir','is','it','je','jm','jo','jp','ke','kg','kh','ki','km','kn','kp','kr','kw','ky','kz','la','lb','lc','li','lk','lr','ls','lt','lu','lv','ly','ma','mc','md','me','mf','mg','mh','mk','ml','mm','mn','mo','mp','mq','mr','ms','mt','mu','mv','mw','mx','my','mz','na','nc','ne','nf','ng','ni','nl','no','np','nr','nu','nz','om','pa','pe','pf','pg','ph','pk','pl','pm','pn','pr','ps','pt','pw','py','qa','re','ro','rs','ru','rw','sa','sb','sc','sd','se','sg','sh','si','sj','sk','sl','sm','sn','so','sr','st','su','sv','sy','sz','tc','td','tf','tg','th','tj','tk','tl','tm','tn','to','tp','tr','tt','tv','tw','tz','ua','ug','uk','um','us','uy','uz','va','vc','ve','vg','vi','vn','vu','wf','ws','ye','yt','yu','za','zm','zw']
GTLD = ['aero','arpa','asia','biz','cat','com','coop','edu','gov','info','int','jobs','mil','mobi','museum','name','net','org','pro','tel','travel']

def extract_domain(host):
	parts = host.split('.')
	if len(parts) == 2:
		return host
	if parts[-1].lower() not in CCTLD:
		return '.'.join(parts[-2:])
	if parts[-2].lower() not in GTLD and len(parts[-2]) > 2:
		return '.'.join(parts[-2:])
	return '.'.join(parts[-3:])

if __name__ == '__main__':
	import doctest
	doctest.testmod()
